13

Online Bonus

Por 139, 13 de jun. de 2017 em CreatureScripts e Movements

10
5.4k
1391
13 de junho de 2017 às 22:38

Script feito inspirado no sistema de Online Bônus do antigo servidor FoxWorld.

Consiste em dar dias de Premium Account esporadicamente para aqueles jogadores que são ativos no servidor, estimulando todos a permanecerem o máximo de tempo conectados, especialmente os jogadores Free Account, que não podem contribuir com o servidor através de doações.

 

Explicação:

A cada uma hora initerrupta que o personagem ficar online, o mesmo irá ganhar 1 Online Bônus. 

Acumulando 30 Online Bônus, o personagem ganha 1 dia de Premium Account, e a sua quantidade de Online Bônus recomeçará a ser contada a partir do zero.

Para deixar bem claro, se dentro dessa uma hora o personagem deslogar por qualquer motivo, o contador da tal uma hora para.

 

Exemplo:

Zezinho entrou no servidor 15:00, então às 16:00 ele ganharia 1 Online Bônus. Mas Zezinho precisou ir na padaria, portanto deslogou às 15:20 (antes de 16:00).

Digamos que ele tenha voltado às 15:30, sendo assim ele precisaria ficar online até 16:30, e de fato fica, ganhando o seu primeiro Online Bônus.

Conforme os dias se passam, Zezinho vai ganhando alguns Online Bônus todos os dias, e finalmente consegue acumular 30 Online Bônus, ganhando então 1 dia de Premium Account, e zerando os seus 30 Online Bônus para que possa ganhar outro dia de Premium Account, quando acumular 30 novamente.

 

Agora vamos ao código:

Em data\creaturescripts\scripts crie um arquivo LUA com o nome de de "onlinebonus" e cole dentro:

function addOnlineBonus(cid, horas, bonus_contador, bonus_max)   if not isPlayer(cid) then   return false   end     setPlayerStorageValue(cid, bonus_contador, getPlayerStorageValue(cid, bonus_contador) + 1)   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Por completar uma hora online sem deslogar, você ganhou 1 Online Bônus. Total: ".. getPlayerStorageValue(cid,bonus_contador) .. ".")      if getPlayerStorageValue(cid, bonus_contador) >= bonus_max then   doPlayerSendTextMessage(cid, 19, "Seus ".. bonus_max .." Online Bônus foram convertidos em 1 dia de Premium Account!")    doPlayerAddPremiumDays(cid, 1)   setPlayerStorageValue(cid, bonus_contador, 0)   end	     addEvent(addOnlineBonus, horas * 3600 * 1000, cid, horas, bonus_contador, bonus_max)      endfunction onLogin(cid)   local bonus_contador = 72702 -- Storage que vai guardar quantos online bonus o char possui.   local horas = 1 -- Quantidade de horas o char precisa ficar logado pra receber cada online bonus.    local bonus_max = 30 -- Quantidade de bonus que o char precisa atingir para ganhar 1 dia de premium account, zerando o contador.   if getPlayerStorageValue(cid, bonus_contador) > 0 then   doPlayerSendTextMessage(cid,22,"Você está com: " .. getPlayerStorageValue(cid,bonus_contador) .. " Online Bônus.")   else   setPlayerStorageValue(cid, bonus_contador, 0)   doPlayerSendTextMessage(cid,22,"Você está com: 0 Online Bônus.")   end   addEvent(addOnlineBonus, horas * 3600 * 1000, cid, horas, bonus_contador, bonus_max) return true   end

 

Agora em data\creaturescripts\creaturescripts.xml adicione a tag:

<event type="login" name="onlinebonus" event="script" value="onlinebonus.lua"/>	

 

E por último vá em data\creaturescripts\scripts\login.lua e adicione esta linha:

registerCreatureEvent(cid, "onlinebonus")

 

Pronto ;):

Editado Junho 14 por 139

Atualização

JosegvbJ
13 de junho de 2017 às 23:04

adorei, obrigado!

sayamenS
13 de junho de 2017 às 23:08

mulke zika esse =):

MudrockM
13 de junho de 2017 às 23:33

Curti pra caramba, muito obrigado por compartilhar ;):

1 mês depois...
BabilokoB
01 de julho de 2017 às 20:54

Seria possivel o player ganhar skill em vez desse online bonus?

por exemplo: caso o player tenha o valor 1 no storage 72702 ele ganha 10 em todos os  skills e caso o storage volte para 0 ele perde esse bonus.

2 semanas depois...
1391
14 de julho de 2017 às 05:01

@Babiloko O jogador após ficar uma hora online ganharia um buff de +10 em todas as skills até ele deslogar?

E toda vez que o personagem logar teria que ficar essa uma hora online pra ganhar o buff de novo?

Se for isso da pra fazer sim, só que tenha em mente: se o seu servidor possuir alguma outra fonte de buff nas skills (magia / runa / potion) não vai funcionar. Porque não da pra combar os buffs, o buff usado por último remove o efeito do anterior.

Ex: O Pedro ficou uma hora online e ganhou +10 em axe, sword, club e fist fighting, se ele der "utito tempo", ele vai perder esse buff anterior da hora online, e ganhar o buff da "utito tempo".

Editado Julho 14 por 139

Complementar

GabrielkssG
17 de julho de 2017 às 15:56

teria como modificar para contar esses pontos e dps ser utilizado em um npc para comprar items com esses pontos online ?

1 mês depois...
BabilokoB
03 de agosto de 2017 às 23:03
Em 14/07/2017 at 05:01, 139 disse:

@Babiloko O jogador após ficar uma hora online ganharia um buff de +10 em todas as skills até ele deslogar?

E toda vez que o personagem logar teria que ficar essa uma hora online pra ganhar o buff de novo?

Se for isso da pra fazer sim, só que tenha em mente: se o seu servidor possuir alguma outra fonte de buff nas skills (magia / runa / potion) não vai funcionar. Porque não da pra combar os buffs, o buff usado por último remove o efeito do anterior.

Ex: O Pedro ficou uma hora online e ganhou +10 em axe, sword, club e fist fighting, se ele der "utito tempo", ele vai perder esse buff anterior da hora online, e ganhar o buff da "utito tempo".

Entendi. Consegui fazer aqui usando SUBID no combat param. mesmo usando utito tempo ele nao perde na verdade ele soma :D obrigado pela atençao

1 ano depois...
omega26O
15 de março de 2019 às 13:12

Estou problema usando no sistema do "mock vip system" alguem pode me ajudar??

 

[12:35:24.123] [Error - CreatureScript Interface] 
[12:35:24.123] In a timer event called from: 
[12:35:24.123] data/creaturescripts/scripts/onlinebonus.lua:onLogin
[12:35:24.123] Description: 
[12:35:24.123] data/creaturescripts/scripts/onlinebonus.lua:11: attempt to call global 'doPlayerAddvipDays' (a nil value)
[12:35:24.123] stack traceback:
[12:35:24.123]     data/creaturescripts/scripts/onlinebonus.lua:11: in function <data/creaturescripts/scripts/onlinebonus.lua:1>
 

1 ano depois...
feipedorpF
18 de outubro de 2020 às 00:19

tem como usar usando os online pontos  com um npc para cmprar itens?